home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 2010 Software/Programs / PCGuia_programas.iso / Software / Utils / VLC Media Player / vlc-1.0.3-win32.exe / sdk / include / vlc / plugins / vlc_epg.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-10-30  |  3.6 KB  |  122 lines

  1. /*****************************************************************************
  2.  * vlc_epg.h: Electronic Program Guide
  3.  *****************************************************************************
  4.  * Copyright (C) 2007 the VideoLAN team
  5.  * $Id$
  6.  *
  7.  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23.  
  24. #ifndef VLC_EPG_H
  25. #define VLC_EPG_H 1
  26.  
  27. /**
  28.  * \file
  29.  * This file defines functions and structures for storing dvb epg information
  30.  */
  31.  
  32. typedef struct
  33. {
  34.     int64_t i_start;    /* Interpreted as a value return by time() */
  35.     int     i_duration;    /* Duration of the event in second */
  36.  
  37.     char    *psz_name;
  38.     char    *psz_short_description;
  39.     char    *psz_description;
  40.  
  41. } vlc_epg_event_t;
  42.  
  43. typedef struct
  44. {
  45.     char            *psz_name;
  46.     vlc_epg_event_t *p_current; /* Can be null or should be the same than one of pp_event entry */
  47.  
  48.     int             i_event;
  49.     vlc_epg_event_t **pp_event;
  50. } vlc_epg_t;
  51.  
  52. static inline void vlc_epg_Init( vlc_epg_t *p_epg, const char *psz_name )
  53. {
  54.     p_epg->psz_name = psz_name ? strdup( psz_name ) : NULL;
  55.     p_epg->p_current = NULL;
  56.     TAB_INIT( p_epg->i_event, p_epg->pp_event );
  57. }
  58.  
  59. static inline void vlc_epg_Clean( vlc_epg_t *p_epg )
  60. {
  61.     int i;
  62.     for( i = 0; i < p_epg->i_event; i++ )
  63.     {
  64.         vlc_epg_event_t *p_evt = p_epg->pp_event[i];
  65.         free( p_evt->psz_name );
  66.         free( p_evt->psz_short_description );
  67.         free( p_evt->psz_description );
  68.         free( p_evt );
  69.     }
  70.     TAB_CLEAN( p_epg->i_event, p_epg->pp_event );
  71.     free( p_epg->psz_name );
  72. }
  73.  
  74. static inline void vlc_epg_AddEvent( vlc_epg_t *p_epg, int64_t i_start, int i_duration,
  75.                                 const char *psz_name, const char *psz_short_description, const char *psz_description )
  76. {
  77.     vlc_epg_event_t *p_evt = (vlc_epg_event_t*)malloc( sizeof(vlc_epg_event_t) );
  78.     if( !p_evt )
  79.         return;
  80.     p_evt->i_start = i_start;
  81.     p_evt->i_duration = i_duration;
  82.     p_evt->psz_name = psz_name ? strdup( psz_name ) : NULL;
  83.     p_evt->psz_short_description = psz_short_description ? strdup( psz_short_description ) : NULL;
  84.     p_evt->psz_description = psz_description ? strdup( psz_description ) : NULL;
  85.     TAB_APPEND_CPP( vlc_epg_event_t, p_epg->i_event, p_epg->pp_event, p_evt );
  86. }
  87.  
  88. LIBVLC_USED
  89. static inline vlc_epg_t *vlc_epg_New( const char *psz_name )
  90. {
  91.     vlc_epg_t *p_epg = (vlc_epg_t*)malloc( sizeof(vlc_epg_t) );
  92.     if( p_epg )
  93.         vlc_epg_Init( p_epg, psz_name );
  94.     return p_epg;
  95. }
  96.  
  97. static inline void vlc_epg_Delete( vlc_epg_t *p_epg )
  98. {
  99.     vlc_epg_Clean( p_epg );
  100.     free( p_epg );
  101. }
  102.  
  103. static inline void vlc_epg_SetCurrent( vlc_epg_t *p_epg, int64_t i_start )
  104. {
  105.     int i;
  106.     p_epg->p_current = NULL;
  107.     if( i_start < 0 )
  108.         return;
  109.  
  110.     for( i = 0; i < p_epg->i_event; i++ )
  111.     {
  112.         if( p_epg->pp_event[i]->i_start == i_start )
  113.         {
  114.             p_epg->p_current = p_epg->pp_event[i];
  115.             break;
  116.         }
  117.     }
  118. }
  119.  
  120. #endif
  121.  
  122.